"""
给出一个 32 位的有符号整数，你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321
 示例 2:

输入: -123
输出: -321
示例 3:

输入: 120
输出: 21
注意:

假设我们的环境只能存储得下 32 位的有符号整数，则其数值范围为 [−2 ** 31,  2 ** 31 − 1]。请根据这个假设，如果反转后整数溢出那么就返回 0。

作者：力扣 (LeetCode)
链接：https://leetcode-cn.com/leetbook/read/tencent/x5s2oj/
来源：力扣（LeetCode）
著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
"""


class Solution:
    def reverse(self, x: int) -> int:
        min_int = - 2 ** 31
        max_int = 2 ** 31 - 1
        s = str(x)
        if len(s) == 1:
            return x
        sign = ''
        if s[0] == '-' or s[0] == '+':
            sign = s[0]
            s = s[1:]
        s = sign + "".join(list(str(s))[::-1])
        x = int(s)
        if min_int < x < max_int:
            return x
        else:
            return 0


if __name__ == '__main__':
    num = 1563847412
    sol = Solution()
    print(sol.reverse(num))
